package com.liqi.display.service;

import com.liqi.display.entity.returnType.TopEightTask;
import com.liqi.display.entity.returnType.WaitAndGetTimeForArea;
import com.liqi.display.entity.returnType.WaitAndGetTotal;
import org.apache.ibatis.annotations.Param;

import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;

public interface IStatisticsService {
	//1、当天业务量
	//当天取号总数
	Integer getNumDayTotal( String start, String end);
	//当天现场取号数
	Integer getXCNumDayTotal( String start, String end);
	//当天微信取号数
	Integer getWXNumDayTotal( String start, String end);
	//当天预约取号数
	Integer getYYNumDayTotal( String start, String end);
	//当天预约数
	Integer getOrderDayTotal( String start, String end);
	//当天收件总数
	Integer getTotalDeal( String start,String end);
	//当天发证总数
	Integer getTotalSend( String start,String end);
	//已经办结
	Integer getTotalComplete(String start,String end);
	//正在办理
	Integer getTotalDoing(String start,String end);
	//当前等待
	Integer getTotalWaiting(String start,String end);
	//各业务区排队量、取号量
	List<WaitAndGetTotal> getTotalWaitingAndGetting();

	//2、近30天业务量统计
	//近30天取号总数
	Integer getNumMouthTotal( String start,String end);
	//近30天现场取号数
	Integer getXCNumMouthTotal( String start,String end);
	//近30天微信取号数
	Integer getWXNumMouthTotal( String start,String end);
	//近30天预约取号数
	Integer getYYNumMouthTotal( String start,String end);
	//近30天预约数
	Integer getOrderMouthTotal( String start,String end);
	//近30天收件总数
	Integer getMouthTotalDeal( String start,String end);
	//近30天发证总数
	Integer getMouthTotalSend( String start,String end);
	//最近30天的每日收件量
	Map<String,Integer> lateThirty(int num);
	//最近30天的每日发证量
	Map<String,Integer> lateThirtySend(int num);

	//3、最近七天取票方式趋势图
	//统计近七天的预约取号数
	Map<String,Integer> totalLateOrder() throws ParseException;
	//统计近七天的现场取号数
	Map<String,Integer> totalLateCurrent() throws ParseException;

	//4、近7天各渠道申办量
	Map<String, String> getWeekBidType();
	//4.2、每月各渠道业务受理量
	Map<String, Map<String,String>> getMonthBidType();

	//5、各时段取号量柱状图
	int lateComare(Date date,Integer num);
	int lateComareHistory(Date startDate,Date endDate,Integer num);

	//6、近30天事项申办量top8
	List<TopEightTask> topEightTask(Date date) throws Exception;

	//7、近30天各业务区域申办量统计
	Map<String,Integer> areaApplyTotal() throws ParseException;

	//8、近1天数据统计
	/**
	 * 获取平均等待时间
	 * @return
	 */
	Double getWaitTime(Date start, Date end);
	/**
	 * 获取平均受理时间
	 * @return
	 */
	Double getAccessTime(Date start, Date end);

	//9、近1天好差评率
	Map<String, String> totalRate();

	//10、近30天各业务区域好差评得分排名（满分5分）
	/**
	 * 近30天各业务区域好差评得分排名（满分5分）
	 * @return
	 */
	Map<String,String>  scoreEval();

	//11、近10日文件柜放取人员对比图
	Map<String,Object> lateTen();

	//12、事项同源统计，是否本地化事项
	Map<String,String>  localRate();

	//13、近30天退件总数
	Map<String,String>  sendBackRate() throws ParseException;

	//14、近30天办结总数
	Map<String,String>  finishRate() throws ParseException;

	//15、近七天各渠道数据
	Map<String,Integer> sevenDayChannelDataTotal();

	//16、各业务区等待与受理时间
	List<WaitAndGetTimeForArea> getWaitTimeForArea();
	//List<WaitAndGetTimeForArea> getAccessTimeForArea();

}
